The use of configurable integrated circuits (“IC's”) has dramatically increased in recent years. One example of a configurable IC is a field programmable gate array (“FPGA”). An FPGA is a field programmable IC that has an internal array of logic circuits (also called logic blocks) that are connected together through numerous interconnect circuits (also called interconnects). In an FPGA, the internal array of logic and interconnect circuits is typically surrounded by input/output blocks. Like some other configurable IC's, the logic and interconnect circuits of an FPGA are configurable.
FIG. 1 illustrates an array structure 100 of a prior art FPGA. As shown in this figure, the array 100 includes numerous logic circuits 105 and interconnect circuits 110. In this architecture, the logic circuit 105 are referred to configurable logic blocks (CLB's). Each CLB is formed by several configurable look-up tables (LUT's), where each LUT is a configurable logic circuit.
As shown in FIG. 1, the FPGA array structure 100 has two types of interconnect circuits 110a and 110b. Interconnect circuits 110a are connection boxes that connect CLB's 105 and interconnect circuit 110b to other CLB's 105 and interconnect circuits 110b. Interconnect circuits 110b, on the other hand, are switchboxes that connect the connection boxes 110a to other connection boxes 110a. 
Although not explicitly illustrated in FIG. 1, a CLB 105 can connect to CLB's that are several columns or several rows away from it in the array. FIG. 2 illustrates several such connections in a prior configurable node architecture. Specifically, this figure illustrates an array 205 of CLB's 210 without showing any of the intervening switch and connection boxes. As shown in this figure, a CLB 210a connects to CLB's that are one, two, three and six rows above and below it, and to CLB's that are one, two, three, and six columns to its right and left.
The advantage of the connection architecture illustrated in FIG. 2 is that it allows one CLB to connect to another CLB that is much farther away where the distance is measured in terms of connection between two CLB's. On the other hand, this architecture requires the use of multiple connections to connect two CLB's that are in two different rows and columns. This requirement makes the connection architecture illustrated in FIG. 2 inefficient and expensive as each connection requires the use of transistor switching logic.
Also, the connection architecture illustrated in FIG. 2 is not designed to optimize the number of CLB's reachable from any given CLB. Specifically, this architecture employs the same connection scheme for each CLB. Hence, as shown in FIG. 3, this architecture can result in a cycle between two CLB's 305 and 310 in the same column, or two CLB's 315 and 320 in the same row. Such cycles are undesirable as they come at the expense of reachability of other CLB's. The uniform connection architecture of FIG. 2 is also inefficient as it provides more ways than necessary for reaching one CLB from another CLB. This redundancy is illustrated in FIG. 3, which illustrates that the CLB 325 can connect to CLB 330 through two different sets of connections, one that goes through CLB 335 and one that goes through CLB 340. This redundancy is undesirable as it comes at the expense of reachability of other CLB's.
There is a need in the art for a configurable IC that has a wiring architecture that increases the interconnectivity between its configurable nodes. Ideally, this wiring architecture is optimized for the interconnectivity between the configurable nodes of the configurable IC. There is also a need for a method that identifies optimal connection schemes for connecting the configurable nodes of a configurable IC.